<?php
/******************************************************
	* Vue pour l'affichage de la reservation effectuee*
	* Récuperation du template AfficherRenduReservationTemplate.xsl *
	* Et remplissage de la variable $content du layout   * 
	* avec le template		                             *
	******************************************************/

class AfficherRenduReservationView extends View
{
	
	protected $xmlDoc;
	protected $parentNode;
	protected $xslt;
	
	//on recupere le path de notre template (ici le template est une feuille de style xsl) et du layout
	public function __construct(){
		$temp=dirname(__FILE__).DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'template'.DIRECTORY_SEPARATOR.'AfficherRenduReservationTemplate.xsl';
		$this->setTemplate($temp);
		$lay=dirname(__FILE__).DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'layout'.DIRECTORY_SEPARATOR.'Layout.php';
		$this->setLayout($lay);
	}
	
	public function display(HttpRequest $request)
    {
        $this->setRequest($request);
		//on creer le fichier xml qui sera utilise par la feuille de style
		$this->createReservationXML($request->getObject('reservation'));
		$this->prepareOutput();
		//on démarre la temporisation de sortie
        ob_start();
		//on effectue la transformation xslt (xml +feuille de style)
        $content= print($this->xslt->transformToXML($this->xmlDoc));
        //on recupere le contenu du tampon
		$content = ob_get_contents();
		//on efface le contenu du tampon
        ob_end_clean();
		//on inclut le layout
        include $this->getLayout();
    }
	 
	 
	
	
	 public function prepareOutput()
    {
		//on charge la feuille de style xsl
		$xsl=new DomDocument();
		$xsl->load($this->getTemplate());
		//on creer notre objet xslt
		$this->xslt= new XSLTProcessor();
		//on importe la feulle de style pour la fusion future
		$this->xslt->importStylesheet($xsl);
	}
	
	function createReservationXML($reservation){
	
		
			$this->xmlDoc = new DomDocument('1.0','utf-8');
			$this->parentNode=$this->xmlDoc->appendChild($this->xmlDoc->createElement('listingreservation'));
			//le noeud reservation
			$reservationNode=$this->xmlDoc->createElement('reservation');
			$this->parentNode->appendChild($reservationNode);
			
			$idReservNode=$this->xmlDoc->createElement('id');
			$reservationNode->appendChild($idReservNode);
			$idReservNode->appendChild($this->xmlDoc->createTextNode($reservation->getId()));
			
			$dateReservNode=$this->xmlDoc->createElement('date');
			$reservationNode->appendChild($dateReservNode);
			$dateReservNode->appendChild($this->xmlDoc->createTextNode($reservation->getDateReservation()));
			
			$panierNode=$this->xmlDoc->createElement('panier');
			$this->parentNode->appendChild($panierNode);
			
			// On creer les noeuds des differentes ligne de panier
			foreach( $reservation->getPanier()->getLignesPanier() as $ligne ) {
				
				$ligneNode=$this->xmlDoc->createElement('ligne');
				$panierNode->appendChild($ligneNode);
				$titrefilmNode=$this->xmlDoc->createElement('titrefilm');
				$ligneNode->appendChild($titrefilmNode);
				$titrefilmNode->appendChild($this->xmlDoc->createTextNode($ligne->getSeance()->getFilm()->getTitre()));
				
				$dateSeanceNode=$this->xmlDoc->createElement('dateseance');
				$ligneNode->appendChild($dateSeanceNode);
				$dateSeanceNode->appendChild($this->xmlDoc->createTextNode($ligne->getSeance()->getDateSeance()));
				
				$heureSeanceNode=$this->xmlDoc->createElement('heureseance');
				$ligneNode->appendChild($heureSeanceNode);
				$heureSeanceNode->appendChild($this->xmlDoc->createTextNode($ligne->getSeance()->getHeureSeance()));
				
				$quantiteNode=$this->xmlDoc->createElement('quantite');
				$ligneNode->appendChild($quantiteNode);
				$quantiteNode->appendChild($this->xmlDoc->createTextNode($ligne->getQuantite()));
				
				$prixNode=$this->xmlDoc->createElement('prix');
				$ligneNode->appendChild($prixNode);
				$prixNode->appendChild($this->xmlDoc->createTextNode($ligne->getPrix()));
				
				$prixtotalNode=$this->xmlDoc->createElement('prixtotal');
				$ligneNode->appendChild($prixtotalNode);
				$prixtotalNode->appendChild($this->xmlDoc->createTextNode($ligne->getMontant()));
			
			}
			// On creer les noeuds necessaire pour l'affichage du client et de la carte bancaire
			$clientNode=$this->xmlDoc->createElement('client');
			$this->parentNode->appendChild($clientNode);
			
			$nomNode=$this->xmlDoc->createElement('nom');
			$clientNode->appendChild($nomNode);
			$nomNode->appendChild($this->xmlDoc->createTextNode($reservation->getClient()->getNom()));
			
			
			$prenomNode=$this->xmlDoc->createElement('prenom');
			$clientNode->appendChild($prenomNode);
			$prenomNode->appendChild($this->xmlDoc->createTextNode($reservation->getClient()->getPrenom()));
			
			
			$adresseNode=$this->xmlDoc->createElement('adresse');
			$clientNode->appendChild($adresseNode);
			$adresseNode->appendChild($this->xmlDoc->createTextNode($reservation->getClient()->getAdresse()));
			
			$villeNode=$this->xmlDoc->createElement('ville');
			$clientNode->appendChild($villeNode);
			$villeNode->appendChild($this->xmlDoc->createTextNode($reservation->getClient()->getVille()));
			
			$codepostalNode=$this->xmlDoc->createElement('codepostal');
			$clientNode->appendChild($codepostalNode);
			$codepostalNode->appendChild($this->xmlDoc->createTextNode($reservation->getClient()->getCodePostal()));
			
			$moyenpaiementNode=$this->xmlDoc->createElement('moyenpaiement');
			$clientNode->appendChild($moyenpaiementNode);
			$moyenpaiementNode->appendChild($this->xmlDoc->createTextNode("carte Bancaire"));
			
			$typeCarteNode=$this->xmlDoc->createElement('typecarte');
			$clientNode->appendChild($typeCarteNode);
			$typeCarteNode->appendChild($this->xmlDoc->createTextNode($reservation->getCarteBancaire()->getTypeCarte()));
			
			$numCarteNode=$this->xmlDoc->createElement('numerocarte');
			$clientNode->appendChild($numCarteNode);
			$numCarteNode->appendChild($this->xmlDoc->createTextNode($reservation->getCarteBancaire()->getNumeroCarte()));
			
			$dateexpirationNode=$this->xmlDoc->createElement('dateexpiration');
			$clientNode->appendChild($dateexpirationNode);
			$dateexpirationNode->appendChild($this->xmlDoc->createTextNode($reservation->getCarteBancaire()->getDateExpiration()));
			// On vide le panier
		    $reservation->getPanier()->erasePanier();
		}
// le fichier generer a la structure suivante	
/*<listingreservation>
				<reservation>
					<id>12</id>
					<date>12/10/2012</date>
				</reservation>
		<panier>
			<ligne>
					<titrefilm>Bilbo le hobbit</titrefilm>
					<dateseance>12/01/2012</dateseance>
					<heureseance>12H50</heureseance>
					<quantite>3</quantite>
					<prix>5,5</prix>
					<prixtotal>16</prixtotal>
			</ligne>
			<ligne>
				<titrefilm>Les cinq legendes</titrefilm>
				<dateseance>13/02/2012</dateseance>
				<heureseance>18H30</heureseance>
				<quantite>1</quantite>
				<prix>4,5</prix>
				<prixtotal>4,5</prixtotal>
			</ligne>
		</panier>
 
		<client>
			<nom>pinson</nom>
			<prenom>fabien</prenom>
			<adresse>53 rue reverseaux</adresse>
			<ville>rochefort</ville>
			<codepostal>17300</codepostal>
			<moyenpaiement>carte bancaire</moyenpaiement>
			<typecarte>visa</typecarte>
			<numerocarte>1522-2222-2222-2222</numerocarte>
			<dateexpiration>18/2015</dateexpiration>
	
		</client>
  
</listingreservation>*/
}
?>
